<?php

namespace App\Service\WorkOrder\Manager;

use App\Enums\WorkOrder\ErrCode;
use App\Enums\WorkOrder\OrderEnum;
use App\Exceptions\Custom\CustomHttpResponseException;
use App\Library\Rms\RmsShopApi;
use App\Models\WorkOrder\WorkOrderUserRoleModel;
use App\Service\OpenShop\Feishu\ConfigService;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Support\Facades\Log;

class ManagerService
{
    public static function popManagerId(int $role, int $problemPid, int $problemChildId, int $exceptUid = 0, int $shopId = 0)
    {
        $userRoleModel = WorkOrderUserRoleModel::query()
                                               ->where('role', $role)
                                               ->where('problemPid', $problemPid)
                                               ->where('problemChildId', $problemChildId)
                                               ->when($exceptUid, function ($query) use ($exceptUid) {
                                                   $query->where('userId', '!=', $exceptUid);
                                               })
                                               ->pluck('userId');

        if (count($userRoleModel)) {
            if ($problemChildId == OrderEnum::PROBLEM_PID_5_CHILDREN_105 && $shopId) {// 进件2.0 按分公司信息区分处理人
                return self::getManagerUserIdByArea($userRoleModel, $shopId);
            }
            return $userRoleModel->random();
        } else {
            Log::warning("popManagerId empty: {$role} {$problemPid} {$problemChildId}");
            throw new CustomHttpResponseException(ErrCode::errCodeTrans(ErrCode::CODE_ERR_NOT_FIND_MANAGER));
        }
    }


    /**
     * 获取外卖区域的负责人
     *
     * @param string $province
     * @return array
     */
    public static function getAreaWaiMaiManagerUserId(string $province): array
    {
        /**
         * 萨博（其他省份） 安徽福建甘肃河南湖北江西宁夏青海上海陕西新疆浙江
         * 琥珀 北京黑龙江河北吉林辽宁内蒙古山东山西天津
         * 克比 广东广西贵州海南湖南江苏四川西藏云南重庆
         */

//        // 台湾 香港 澳门特别行政区 暂无配置
//        $config = [ // 萨博
//            '310000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 上海市
//            '330000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 浙江
//            '340000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 安徽
//            '350000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 福建省
//            '360000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 江西省
//            '410000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 河南省
//            '420000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 湖北省
//            '610000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 陕西省
//            '620000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 甘肃省
//            '630000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 青海
//            '640000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 宁夏回族自治区
//            '650000' => ['userIds' => ['34'], 'sendFsRobotId' => 9], // 新疆维吾尔自治区
//
//            '110000' => ['userIds' => ['93'], 'sendFsRobotId' => 11], // 北京
//            '120000' => ['userIds' => ['93'], 'sendFsRobotId' => 11], // 天津
//            '130000' => ['userIds' => ['93'], 'sendFsRobotId' => 11], // 河北
//            '140000' => ['userIds' => ['93'], 'sendFsRobotId' => 11], // 山西
//            '150000' => ['userIds' => ['93'], 'sendFsRobotId' => 11], // 内蒙古
//            '210000' => ['userIds' => ['93'], 'sendFsRobotId' => 11], // 辽宁
//            '220000' => ['userIds' => ['93'], 'sendFsRobotId' => 11], // 吉林
//            '230000' => ['userIds' => ['93'], 'sendFsRobotId' => 11], // 黑龙江
//            '370000' => ['userIds' => ['93'], 'sendFsRobotId' => 11], // 山东
//
//            '320000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 江苏
//            '430000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 湖南省
//            '440000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 广东省
//            '450000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 广西壮族自治区
//            '460000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 海南
//            '500000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 重庆
//            '510000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 四川
//            '520000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 贵州
//            '530000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 云南省
//            '540000' => ['userIds' => ['2339'], 'sendFsRobotId' => 10], // 西藏
//
//            '0'      => ['userIds' => ['34'], 'sendFsRobotId' => 9]  // 默认
//        ];
//        echo json_encode($config);
//        die;

        $config = ConfigService::config('workOrder', 'waimaiManage')['waimaiManage'];
        return $config[$province] ?? $config[0];
    }

    public static function getWaiMaiPeople(string $province)
    {
//        // 台湾 香港 澳门特别行政区 暂无配置
//        $config = [
//            '310000' => [
//                'waimai' => '萨博',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 上海市
//            '330000' => [
//                'waimai' => '萨博',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 浙江
//            '340000' => [
//                'waimai' => '萨博',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 安徽
//            '350000' => [
//                'waimai' => '萨博',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 福建省
//            '360000' => [
//                'waimai' => '萨博',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 江西省
//            '410000' => [
//                'waimai' => '萨博',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 河南省
//            '420000' => [
//                'waimai' => '萨博',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 湖北省
//            '610000' => [
//                'waimai' => '萨博',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 陕西省
//            '620000' => [
//                'waimai' => '萨博',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 甘肃省
//            '630000' => [
//                'waimai' => '萨博',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 青海
//            '640000' => [
//                'waimai' => '萨博',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 宁夏回族自治区
//            '650000' => [
//                'waimai' => '萨博',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 新疆维吾尔自治区
//
//            '110000' => [
//                'waimai' => '琥珀',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 北京
//            '120000' => [
//                'waimai' => '琥珀',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 天津
//            '130000' => [
//                'waimai' => '琥珀',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 河北
//            '140000' => [
//                'waimai' => '琥珀',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 山西
//            '150000' => [
//                'waimai' => '琥珀',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 内蒙古
//            '210000' => [
//                'waimai' => '琥珀',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 辽宁
//            '220000' => [
//                'waimai' => '琥珀',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 吉林
//            '230000' => [
//                'waimai' => '琥珀',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 黑龙江
//            '370000' => [
//                'waimai' => '琥珀',
//                'siyu'   => '菲灵、布尔玛'
//            ], // 山东
//
//            '320000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 江苏
//            '430000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 湖南省
//            '440000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 广东省
//            '450000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 广西壮族自治区
//            '460000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 海南
//            '500000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 重庆
//            '510000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 四川
//            '520000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 贵州
//            '530000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 云南省
//            '540000' => [
//                'waimai' => '克比',
//                'siyu'   => '玛卡巴卡、布尔玛'
//            ], // 西藏
//            '0'      => [
//                'waimai' => '萨博',
//                'siyu'   => '菲灵、布尔玛'
//            ] // 默认
//        ];

//        echo json_encode($config);
//        die;
//        dd($config);

        $config = ConfigService::config('workOrder', 'waimaiSiyuPeople')['waimaiSiyuPeople'];
        return $config[$province] ?? $config[0];
    }

    /**
     * 工单进件2.0 按分公司信息区分处理人
     * @param $userRoleModel
     * @param $shopId
     * @return mixed
     * @throws GuzzleException
     */
    public static function getManagerUserIdByArea($userRoleModel, $shopId): int
    {
        $shopInfo      = (object)current((new RmsShopApi())->getShopByIds([$shopId])["data"]["shopList"]);
        $addressPrefix = $shopInfo->addressPrefix ?? '';
        if (mb_strlen($addressPrefix) > 2) {
            $addressPrefix = mb_substr($addressPrefix, 0, 2);
        }
        $userId = 0;
        $config = ConfigService::getManagerUserIdByProvince();
        if ($config) {
            foreach ($config as $v) {
                if ($v['cityList']) {
                    foreach ($v['cityList'] as $cityName) {
                        if (strpos($cityName, $addressPrefix) !== false) {
                            $userId = $v['userId'] ?? 0;
                            break;
                        }
                    }
                }
            }
        }
        if (!$userId) {
            $userId = $userRoleModel->random();
        }
        return $userId;
    }
}
